class MonitIntegration < ActiveRecord::Migration[4.2]
  def up

    # return if it's a new setup
    return if !Setting.find_by(name: 'system_init_done')

    Setting.create_if_not_exists(
      title: 'Monit integration',
      name: 'monit_integration',
      area: 'Integration::Switch',
      description: 'Defines if Monit (https://mmonit.com/monit/) is enabled or not.',
      options: {
        form: [
          {
            display: '',
            null: true,
            name: 'monit_integration',
            tag: 'boolean',
            options: {
              true  => 'yes',
              false => 'no',
            },
          },
        ],
      },
      state: false,
      preferences: {
        prio: 1,
        permission: ['admin.integration'],
      },
      frontend: false
    )
    Setting.create_if_not_exists(
      title: 'Sender',
      name: 'monit_sender',
      area: 'Integration::Monit',
      description: 'Defines the sender email address of the service emails.',
      options: {
        form: [
          {
            display: '',
            null: false,
            name: 'monit_sender',
            tag: 'input',
            placeholder: 'monit@monitoring.example.com',
          },
        ],
      },
      state: 'monit@monitoring.example.com',
      preferences: {
        prio: 2,
        permission: ['admin.integration'],
      },
      frontend: false,
    )
    Setting.create_if_not_exists(
      title: 'Auto close',
      name: 'monit_auto_close',
      area: 'Integration::Monit',
      description: 'Defines if tickets should be closed if service is recovered.',
      options: {
        form: [
          {
            display: '',
            null: true,
            name: 'monit_auto_close',
            tag: 'boolean',
            options: {
              true  => 'yes',
              false => 'no',
            },
            translate: true,
          },
        ],
      },
      state: true,
      preferences: {
        prio: 3,
        permission: ['admin.integration'],
      },
      frontend: false
    )
    Setting.create_if_not_exists(
      title: 'Auto close state',
      name: 'monit_auto_close_state_id',
      area: 'Integration::Monit',
      description: 'Defines the state of auto closed tickets.',
      options: {
        form: [
          {
            display: '',
            null: false,
            name: 'monit_auto_close_state_id',
            tag: 'select',
            relation: 'TicketState',
            translate: true,
          },
        ],
      },
      state: 4,
      preferences: {
        prio: 4,
        permission: ['admin.integration'],
      },
      frontend: false
    )
    Setting.create_if_not_exists(
      title: 'Defines postmaster filter.',
      name: '5300_postmaster_filter_monit',
      area: 'Postmaster::PreFilter',
      description: 'Defines postmaster filter to manage Monit (https://mmonit.com/monit/) emails.',
      options: {},
      state: 'Channel::Filter::Monit',
      frontend: false
    )
  end

end
